﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados;
using System.ComponentModel;

namespace Negocios
{
    [DataObject]
    public class AutorBLL
    {
        
        /*public void Consulta2(Autor a)
        {
            try
            {
                DSMPTUDO.T_AUTORDataTable autorDT = AutorDAL.ConsultaPorCodigo(a.Codigo);
                a.Nome = autorDT[0].tx_nome;
                a.Tipo = autorDT[0].nr_tipo;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao consultar Autor: " + ex.Message);
            }
        }*/

        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public Autor Consulta(int codigo)
         {
             try
             {
                 DSMPTUDO.T_AUTORDataTable autorDT = AutorDAL.ConsultaPorCodigo(codigo);
                 if (autorDT.Count == 1)
                     return (new Autor(codigo, autorDT[0].tx_nome, autorDT[0].nr_tipo));
                 else return null;
             }
             catch (Exception ex)
             {
                 throw new Exception("Erro ao consultar Autor: " + ex.Message);
             }
         }
        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public static List<Autor> ConsultaTodos()
        {
            try
            {
                List<Autor> autores = new List<Autor>();
                DSMPTUDO.T_AUTORDataTable autorDT = AutorDAL.ConsultaTodos();
                for (int i = 0; i < autorDT.Count; i++)
                {
                    Autor a = new Autor(autorDT[i].nr_codigo, autorDT[i].tx_nome, autorDT[i].nr_tipo);
                    autores.Add(a);
                }
                return autores;
                
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao consultar Autor: " + ex.Message);
            }
        }
        [DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
        public bool Insere(Autor a)
        {           
            try
            {
                if(Consulta(a.Codigo)!=null)
                    throw new SystemException("Erro ao inserir, autor existente!");

                return AutorDAL.Insere(a.Nome, a.Tipo);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao inserir Autor: " + ex.Message);
            }
        }
        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool Atualiza(Autor a)
        {
            try
            {
                return AutorDAL.Atualiza(a.Nome, a.Tipo, a.Codigo);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar Autor: " + ex.Message);
            }
        }
        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool Remove(Autor a)
        {
            try
            {
                return AutorDAL.Remove(a.Codigo);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao remover Autor: " + ex.Message);
            }
        }
        /*
        public static List<EspecificacaoVisao> ConsultaTodosVisao()
        {
            List<EspecificacaoVisao> ListaVisao = new List<EspecificacaoVisao>();

            DSMPTUDO.T_ESPECIFICACAODataTable especificacaoDT = EspecificacaoDAL.ConsultaTodos();
            for (int i = 0; i < especificacaoDT.Count; i++)
            {
                EspecificacaoVisao ev = new EspecificacaoVisao();
                if (especificacaoDT[i].nr_tipo == 1)
                    ev.Nome = "Imagem/Vídeo: " + especificacaoDT[i].nr_largura + "x" + especificacaoDT[i].nr_altura;
                else ev.Nome = "Áudio: " + especificacaoDT[i].nr_bitrate + "bps";
                ev.Id = especificacaoDT[i].nr_codigo;
                ListaVisao.Add(ev);
            }
            return ListaVisao;
        }
         */
    }
}
